package com.hnit.web.bean;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 优惠券实体类
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("coupons")
public class Coupons implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 优惠券ID
     */
    @TableId(value = "couponId", type = IdType.AUTO)
    private Long couponId;

    /**
     * 优惠券名称
     */
    private String couponName;

    /**
     * 优惠券类型：1-满减券 2-折扣券 3-免邮券
     */
    private Integer couponType;

    /**
     * 使用门槛金额
     */
    private BigDecimal thresholdAmount;

    /**
     * 减免金额(满减券)
     */
    private BigDecimal discountAmount;

    /**
     * 折扣比例(折扣券，如0.85表示8.5折)
     */
    private BigDecimal discountRate;

    /**
     * 最大减免金额(折扣券)
     */
    private BigDecimal maxDiscountAmount;

    /**
     * 总发放数量
     */
    private Integer totalCount;

    /**
     * 剩余数量
     */
    private Integer remainingCount;

    /**
     * 抢购开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime startTime;

    /**
     * 抢购结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime endTime;

    /**
     * 有效期天数
     */
    private Integer validDays;

    /**
     * 每人限领数量
     */
    private Integer userLimit;

    /**
     * 状态：0-禁用 1-启用
     */
    private Integer couponStatus;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createdTime;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime updatedTime;
}
